<html>
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
  <title>
   神经网络编程入门  | 数螺 | NAUT IDEA
  </title>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
  <style type="text/css">
   #xmain img {
                  max-width: 100%;
                  display: block;
                  margin-top: 10px;
                  margin-bottom: 10px;
                }

                #xmain p {
                    line-height:150%;
                    font-size: 16px;
                    margin-top: 20px;
                }

                #xmain h2 {
                    font-size: 24px;
                }

                #xmain h3 {
                    font-size: 20px;
                }

                #xmain h4 {
                    font-size: 18px;
                }


                .header {
	           background-color: #0099ff;
	           color: #ffffff;
	           margin-bottom: 20px;
	        }

	        .header p {
                  margin: 0px;
                  padding: 10px 0;
                  display: inline-block;  
                  vertical-align: middle;
                  font-size: 16px;
               }

               .header a {
                 color: white;
               }

              .header img {
                 height: 25px;
              }
  </style>
  <script src="http://cdn.bootcss.com/jquery/3.0.0/jquery.min.js">
  </script>
  <script src="http://nautstatic-10007657.file.myqcloud.com/static/css/readability.min.js" type="text/javascript">
  </script>
  <script type="text/javascript">
   $(document).ready(function() {
                 var loc = document.location;
                 var uri = {
                  spec: "http://dataunion.org/12744.html",
                  host: "http://dataunion.org",
                  prePath: "http://dataunion.org",
                  scheme: "http",
                  pathBase: "http://dataunion.org/"
                 };
    
                 var documentClone = document.cloneNode(true);
                 var article = new Readability(uri, documentClone).parse();
     
                 document.getElementById("xmain").innerHTML = article.content;
                });
  </script>
  <!-- 1466454605: Accept with keywords: (title(0.2):神经网络,编程,社区,入门,数盟, topn(0.633333333333):联系,最大值,个数,数盟,神经网络,状态,阈值,人工智能,识别率,参数,文章,数据,节点,向量,式子,算法,函数,权重,样本,矩阵,语法,最小值,线性,双极,值域,分类,网络,归一化,导师,神经元).-->
 </head>
 <body onload="">
  <div class="header">
   <div class="container">
    <div class="row">
     <div class="col-xs-6 col-sm-6 text-left">
      <a href="/databee">
       <img src="http://nautidea-10007657.cos.myqcloud.com/logo_white.png"/>
      </a>
      <a href="/databee">
       <p>
        数螺
       </p>
      </a>
     </div>
     <div class="hidden-xs col-sm-6 text-right">
      <p>
       致力于数据科学的推广和知识传播
      </p>
     </div>
    </div>
   </div>
  </div>
  <div class="container text-center">
   <h1>
    神经网络编程入门
   </h1>
  </div>
  <div class="container" id="xmain">
   ﻿﻿
   <title>
    神经网络编程入门 | 数盟社区
   </title>
   <!-- All in One SEO Pack 2.2.7.6.2 by Michael Torbert of Semper Fi Web Design[32,55] -->
   <!-- /all in one seo pack -->
   <!--
<div align="center">
<a href="http://strata.oreilly.com.cn/hadoop-big-data-cn?cmp=mp-data-confreg-home-stcn16_dataunion_pc" target="_blank"><img src="http://dataunion.org/wp-content/uploads/2016/05/stratabj.jpg"/ ></a>
</div>
-->
   <header id="header-web">
    <div class="header-main">
     <hgroup class="logo">
      <h1>
       <a href="http://dataunion.org/" rel="home" title="数盟社区">
        <img src="http://dataunion.org/wp-content/themes/yzipi/images/logo.png"/>
       </a>
      </h1>
     </hgroup>
     <!--logo-->
     <nav class="header-nav">
      <ul class="menu" id="menu-%e4%b8%bb%e8%8f%9c%e5%8d%95">
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-71" id="menu-item-71">
        <a href="http://dataunion.org/category/events" title="events">
         活动
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22457" id="menu-item-22457">
          <a href="http://dataunion.org/2016timeline">
           2016档期
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-22459" id="menu-item-22459">
          <a href="http://dataunion.org/category/parterc">
           合作会议
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor menu-item-has-children menu-item-20869" id="menu-item-20869">
        <a href="http://dataunion.org/category/tech" title="articles">
         文章
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20867" id="menu-item-20867">
          <a href="http://dataunion.org/category/tech/base" title="base">
           基础架构
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-3302" id="menu-item-3302">
          <a href="http://dataunion.org/category/tech/ai" title="ai">
           人工智能
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3303" id="menu-item-3303">
          <a href="http://dataunion.org/category/tech/analysis" title="analysis">
           数据分析
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21920" id="menu-item-21920">
          <a href="http://dataunion.org/category/tech/dm">
           数据挖掘
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3314" id="menu-item-3314">
          <a href="http://dataunion.org/category/tech/viz" title="viz">
           可视化
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3305" id="menu-item-3305">
          <a href="http://dataunion.org/category/tech/devl" title="devl">
           编程语言
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-20876" id="menu-item-20876">
        <a href="http://dataunion.org/category/industry">
         行业
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-16328" id="menu-item-16328">
          <a href="http://dataunion.org/category/industry/case" title="case">
           行业应用
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2112" id="menu-item-2112">
          <a href="http://dataunion.org/category/industry/demo" title="demo">
           Demo展示
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21562" id="menu-item-21562">
          <a href="http://dataunion.org/category/industry/news">
           行业资讯
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-311" id="menu-item-311">
        <a href="http://dataunion.org/category/sources" title="sources">
         资源
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20870" id="menu-item-20870">
        <a href="http://dataunion.org/category/books" title="book">
         图书
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21363" id="menu-item-21363">
        <a href="http://dataunion.org/category/training">
         课程
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-21853" id="menu-item-21853">
        <a href="http://dataunion.org/category/jobs">
         职位
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-22050" id="menu-item-22050">
          <a href="http://dataunion.org/category/career">
           职业规划
          </a>
         </li>
        </ul>
       </li>
      </ul>
     </nav>
     <!--header-nav-->
    </div>
   </header>
   <!--header-web-->
   <div id="main">
    <div id="soutab">
     <form action="http://dataunion.org/" class="search" method="get">
     </form>
    </div>
    <div id="container">
     <nav id="mbx">
      当前位置：
      <a href="http://dataunion.org">
       首页
      </a>
      &gt;
      <a href="http://dataunion.org/category/tech">
       文章
      </a>
      &gt;
      <a href="http://dataunion.org/category/tech/ai">
       人工智能
      </a>
      &gt;  正文
     </nav>
     <!--mbx-->
     <article class="content">
      <header align="centre" class="contenttitle">
       <div class="mscc">
        <h1 class="mscctitle">
         <a href="http://dataunion.org/12744.html">
          神经网络编程入门
         </a>
        </h1>
        <address class="msccaddress ">
         <em>
          2,340 次阅读 -
         </em>
         <a href="http://dataunion.org/category/tech/ai" rel="category tag">
          人工智能
         </a>
        </address>
       </div>
      </header>
      <div class="content-text">
       <p>
        作者：
        <a href="http://home.cnblogs.com/u/heaad/">
         苍梧
        </a>
       </p>
       <p>
        本文主要内容包括： (1) 介绍神经网络基本原理，(2) AForge.NET实现前向神经网络的方法，(3) Matlab实现前向神经网络的方法 。
       </p>
       <p>
        <b>
         第
        </b>
        <b>
         0
        </b>
        <b>
         节、引例
        </b>
        <b>
        </b>
       </p>
       <p>
        本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在http://en.wikipedia.org/wiki/Iris_flower_data_set  找到。这里简要介绍一下Iris数据集：
       </p>
       <p>
        有一批Iris花，已知这批Iris花可分为3个品种，现需要对其进行分类。不同品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度会有差异。我们现有一批已知品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度的数据。
       </p>
       <p>
        一种解决方法是用已有的数据训练一个神经网络用作分类器。
       </p>
       <div>
        <p>
         如果你只想用C#或Matlab快速实现神经网络来解决你手头上的问题，或者已经了解神经网络基本原理，请直接跳到第二节——神经网络实现。
        </p>
       </div>
       <p>
        <b>
         第一节、神经网络基本原理
        </b>
        <b>
        </b>
       </p>
       <p>
        <b>
         1.
        </b>
        <b>
         人工神经元
        </b>
        <b>
         ( Artificial Neuron )
        </b>
        <b>
         模型
        </b>
        <b>
        </b>
       </p>
       <p>
        人工神经元是神经网络的基本元素，其原理可以用下图表示：
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/20110307222455621.jpg"/>
       </p>
       <p align="center">
        图1. 人工神经元模型
       </p>
       <p align="center">
       </p>
       <p>
        图中x1~xn是从其他神经元传来的输入信号，wij表示表示从神经元j到神经元i的连接权值，
        <b>
         θ
        </b>
        表示一个阈值 ( threshold )，或称为偏置( bias )。则神经元i的输出与输入的关系表示为：
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030721501442.png"/>
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030721502781.png"/>
       </p>
       <p>
        图中 yi表示神经元i的输出，函数f称为
        <b>
         激活函数
        </b>
        ( Activation Function )或转移函数 ( Transfer Function ) ，net称为净激活(net activation)。若将阈值看成是神经元i的一个输入x0的权重wi0，则上面的式子可以简化为：
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030721504430.png"/>
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030721505337.png"/>
       </p>
       <p>
        若用X表示输入向量，用W表示权重向量，即：
       </p>
       <p align="center">
        X = [ x0 , x1 , x2 , ……. , xn ]
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030721512689.png"/>
       </p>
       <p>
        则神经元的输出可以表示为向量相乘的形式：
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030721514231.png"/>
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030721520023.png"/>
       </p>
       <p>
        若神经元的净激活net为正，称该神经元处于激活状态或兴奋状态(fire)，若净激活net为负，则称神经元处于抑制状态。
       </p>
       <p>
        图1中的这种“阈值加权和”的神经元模型称为
        <b>
         M-P
        </b>
        <b>
         模型
        </b>
        ( McCulloch-Pitts Model )，也称为神经网络的一个
        <b>
         处理单元
        </b>
        <b>
         ( PE, Processing Element )
        </b>
        。
       </p>
       <p>
        <b>
         2.
        </b>
        <b>
         常用激活函数
        </b>
        <b>
        </b>
       </p>
       <p>
        激活函数的选择是构建神经网络过程中的重要环节，下面简要介绍常用的激活函数。
       </p>
       <p>
        <b>
         (1)
        </b>
        <b>
         线性函数
        </b>
        <b>
         ( Liner Function )
        </b>
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030721523837.png"/>
       </p>
       <p>
        <b>
         (2)
        </b>
        <b>
         斜面函数
        </b>
        <b>
         ( Ramp Function )
        </b>
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030721525491.png"/>
       </p>
       <p>
        <b>
         (3)
        </b>
        <b>
         阈值函数
        </b>
        <b>
         ( Threshold Function )
        </b>
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030721531558.png"/>
       </p>
       <p align="center">
       </p>
       <p>
        以上3个激活函数都属于线性函数，下面介绍两个常用的非线性激活函数。
       </p>
       <p>
        <b>
         (4) S
        </b>
        <b>
         形函数
        </b>
        <b>
         ( Sigmoid Function )
        </b>
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722052121.png"/>
       </p>
       <p>
        该函数的导函数：
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722054030.png"/>
       </p>
       <p>
        <b>
         (5)
        </b>
        <b>
         双极
        </b>
        <b>
         S
        </b>
        <b>
         形函数
        </b>
        <b>
        </b>
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722060475.png"/>
       </p>
       <p align="left">
        该函数的导函数：
       </p>
       <p align="left">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722062274.png"/>
       </p>
       <p>
        S形函数与双极S形函数的图像如下：
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722263982.png"/>
       </p>
       <p align="center">
        图3. S形函数与双极S形函数图像
       </p>
       <p>
        双极S形函数与S形函数主要区别在于函数的值域，双极S形函数值域是(-1,1)，而S形函数值域是(0,1)。
       </p>
       <p>
        由于S形函数与双极S形函数都是可导的(导函数是连续函数)，因此适合用在BP神经网络中。（BP算法要求激活函数可导）
       </p>
       <p>
        <b>
         3.
        </b>
        <b>
         神经网络模型
        </b>
        <b>
        </b>
       </p>
       <p>
        神经网络是由大量的神经元互联而构成的网络。根据网络中神经元的互联方式，常见网络结构主要可以分为下面３类：
       </p>
       <p>
        <b>
         (1)
        </b>
        <b>
         前馈神经网络
        </b>
        <b>
         (
        </b>
        <b>
        </b>
        <b>
         Feedforward Neural Networks )
        </b>
       </p>
       <p>
        前馈网络也称前向网络。这种网络只在训练过程会有反馈信号，而在分类过程中数据只能向前传送，直到到达输出层，层间没有向后的反馈信号，因此被称为前馈网络。感知机( perceptron)与BP神经网络就属于前馈网络。
       </p>
       <p>
        图4 中是一个3层的前馈神经网络，其中第一层是输入单元，第二层称为隐含层，第三层称为输出层（输入单元不是神经元，因此图中有2层神经元）。
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722082965.jpg"/>
       </p>
       <p align="center">
        图4. 前馈神经网络
       </p>
       <p align="center">
       </p>
       <p>
        对于一个3层的前馈神经网络N，若用X表示网络的输入向量，W1~W3表示网络各层的连接权向量，F1~F3表示神经网络3层的激活函数。
       </p>
       <p>
        那么神经网络的第一层神经元的输出为：
       </p>
       <p align="center">
        O1 = F1( XW1 )
       </p>
       <p align="left">
        第二层的输出为：
       </p>
       <p align="center">
        O2 = F2 ( F1( XW1 ) W2 )
       </p>
       <p align="left">
        输出层的输出为：
       </p>
       <p align="center">
        O3 = F3( F2 ( F1( XW1 ) W2 ) W3 )
       </p>
       <p>
        若激活函数F1~F3都选用线性函数，那么神经网络的输出O3将是输入X的线性函数。因此，若要做高次函数的逼近就应该选用适当的非线性函数作为激活函数。
       </p>
       <p>
        <b>
         (2)
        </b>
        <b>
         反馈神经网络
        </b>
        <b>
         (
        </b>
        <b>
        </b>
        <b>
         Feedback Neural Networks )
        </b>
       </p>
       <p>
        反馈型神经网络是一种从输出到输入具有反馈连接的神经网络，其结构比前馈网络要复杂得多。典型的反馈型神经网络有：Elman网络和Hopfield网络。
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722084371.jpg"/>
       </p>
       <p align="center">
        图5. 反馈神经网络
       </p>
       <p align="center">
       </p>
       <p>
        <b>
         (3)
        </b>
        <b>
         自组织网络
        </b>
        <b>
         ( SOM ,Self-Organizing Neural Networks )
        </b>
       </p>
       <p>
        自组织神经网络是一种无导师学习网络。它通过自动寻找样本中的内在规律和本质属性，自组织、自适应地改变网络参数与结构。
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722131460.png"/>
       </p>
       <p align="center">
        图6. 自组织网络
       </p>
       <p align="center">
       </p>
       <p>
        <b>
         4.
        </b>
        <b>
         神经网络工作方式
        </b>
        <b>
        </b>
       </p>
       <p>
        神经网络运作过程分为学习和工作两种状态。
       </p>
       <p>
        <b>
         (1)
        </b>
        <b>
         神经网络的学习状态
        </b>
        <b>
        </b>
       </p>
       <p>
        网络的学习主要是指使用学习算法来调整神经元间的联接权，使得网络输出更符合实际。学习算法分为
        <b>
         有导师学习
        </b>
        <b>
         ( Supervised Learning )
        </b>
        与
        <b>
         无导师学习
        </b>
        <b>
         ( Unsupervised Learning )
        </b>
        两类。
       </p>
       <p>
        <b>
         有导师学习
        </b>
        算法将一组训练集 ( training set )送入网络，根据网络的实际输出与期望输出间的差别来调整连接权。有导师学习算法的主要步骤包括：
       </p>
       <p>
        1）  从样本集合中取一个样本（Ai，Bi）；
       </p>
       <p>
        2）  计算网络的实际输出O；
       </p>
       <p>
        3）  求D=Bi-O；
       </p>
       <p>
        4）  根据D调整权矩阵W；
       </p>
       <p>
        5） 对每个样本重复上述过程，直到对整个样本集来说，误差不超过规定范围。
       </p>
       <p>
        BP算法就是一种出色的有导师学习算法。
       </p>
       <p>
        <b>
         无导师学习
        </b>
        抽取样本集合中蕴含的统计特性，并以神经元之间的联接权的形式存于网络中。
       </p>
       <p>
        Hebb学习律是一种经典的无导师学习算法。
       </p>
       <p>
        <b>
         (2)
        </b>
        <b>
         神经网络的工作状态
        </b>
        <b>
        </b>
       </p>
       <p>
        神经元间的连接权不变，神经网络作为分类器、预测器等使用。
       </p>
       <p>
        下面简要介绍一下Hebb学习率与Delta学习规则 。
       </p>
       <p>
        <b>
         (3)
        </b>
        <b>
         无导师学习算法：
        </b>
        <b>
         Hebb
        </b>
        <b>
         学习率
        </b>
        <b>
        </b>
       </p>
       <p>
        Hebb算法核心思想是，当两个神经元同时处于激发状态时两者间的连接权会被加强，否则被减弱。
        <b>
        </b>
       </p>
       <p>
        为了理解Hebb算法，有必要简单介绍一下条件反射实验。巴甫洛夫的条件反射实验：每次给狗喂食前都先响铃，时间一长，狗就会将铃声和食物联系起来。以后如果响铃但是不给食物，狗也会流口水。
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722134488.jpg"/>
       </p>
       <p align="center">
        图7. 巴甫洛夫的条件反射实验
       </p>
       <p align="center">
       </p>
       <p>
        受该实验的启发，Hebb的理论认为在同一时间被激发的神经元间的联系会被强化。比如，铃声响时一个神经元被激发，在同一时间食物的出现会激发附近的另一个神经元，那么这两个神经元间的联系就会强化，从而记住这两个事物之间存在着联系。相反，如果两个神经元总是不能同步激发，那么它们间的联系将会越来越弱。
       </p>
       <p>
        Hebb学习律可表示为：
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722144483.png"/>
       </p>
       <p>
        其中wij表示神经元j到神经元i的连接权，yi与yj为两个神经元的输出，a是表示学习速度的常数。若yi与yj同时被激活，即yi与yj同时为正，那么Wij将增大。若yi被激活，而yj处于抑制状态，即yi为正yj为负，那么Wij将变小。
       </p>
       <p>
        <b>
         (4)
        </b>
        <b>
         有导师学习算法：
        </b>
        <b>
         Delta
        </b>
        <b>
         学习规则
        </b>
        <b>
        </b>
       </p>
       <p>
        Delta学习规则是一种简单的有导师学习算法，该算法根据神经元的实际输出与期望输出差别来调整连接权，其数学表示如下：
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722150043.png"/>
       </p>
       <p>
       </p>
       <p>
        其中Wij表示神经元j到神经元i的连接权，di是神经元i的期望输出，yi是神经元i的实际输出，xj表示神经元j状态，若神经元j处于激活态则xj为1，若处于抑制状态则xj为0或－1（根据激活函数而定）。a是表示学习速度的常数。假设xi为1，若di比yi大，那么Wij将增大，若di比yi小，那么Wij将变小。
       </p>
       <p>
        Delta规则简单讲来就是：若神经元实际输出比期望输出大，则减小所有输入为正的连接的权重，增大所有输入为负的连接的权重。反之，若神经元实际输出比期望输出小，则增大所有输入为正的连接的权重，减小所有输入为负的连接的权重。这个增大或减小的幅度就根据上面的式子来计算。
       </p>
       <p>
        <b>
         (5)
        </b>
        <b>
         有导师学习算法：
        </b>
        <b>
         BP
        </b>
        <b>
         算法
        </b>
        <b>
        </b>
       </p>
       <p>
        采用BP学习算法的前馈型神经网络通常被称为BP网络。
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722152125.png"/>
       </p>
       <p align="center">
        图8. 三层BP神经网络结构
       </p>
       <p align="center">
       </p>
       <p>
        BP网络具有很强的非线性映射能力，一个3层BP神经网络能够实现对任意非线性函数进行逼近（根据Kolrnogorov定理）。一个典型的3层BP神经网络模型如图7所示。
       </p>
       <p>
        BP网络的学习算法占篇幅较大，我打算在下一篇文章中介绍。
       </p>
       <p>
       </p>
       <p>
        <b>
         第二节、神经网络实现
        </b>
        <b>
        </b>
       </p>
       <p>
        <b>
        </b>
       </p>
       <p>
        <b>
         1.
        </b>
        <b>
         数据预处理
        </b>
        <b>
        </b>
       </p>
       <p>
        在训练神经网络前一般需要对数据进行预处理，一种重要的预处理手段是归一化处理。下面简要介绍归一化处理的原理与方法。
       </p>
       <p>
        <b>
         (1)
        </b>
        <b>
         什么是归一化？
        </b>
        <b>
        </b>
       </p>
       <p>
        数据归一化，就是将数据映射到[0,1]或[-1,1]区间或更小的区间，比如(0.1,0.9) 。
       </p>
       <p>
        <b>
         (2)
        </b>
        <b>
         为什么要归一化处理？
        </b>
        <b>
        </b>
       </p>
       <p>
        &lt;1&gt;输入数据的单位不一样，有些数据的范围可能特别大，导致的结果是神经网络收敛慢、训练时间长。
       </p>
       <p>
        &lt;2&gt;数据范围大的输入在模式分类中的作用可能会偏大，而数据范围小的输入作用就可能会偏小。
       </p>
       <p>
        &lt;3&gt;由于神经网络输出层的激活函数的值域是有限制的，因此需要将网络训练的目标数据映射到激活函数的值域。例如神经网络的输出层若采用S形激活函数，由于S形函数的值域限制在(0,1)，也就是说神经网络的输出只能限制在(0,1)，所以训练数据的输出就要归一化到[0,1]区间。
       </p>
       <p>
        &lt;4&gt;S形激活函数在(0,1)区间以外区域很平缓，区分度太小。例如S形函数f(X)在参数a=1时，f(100)与f(5)只相差0.0067。
       </p>
       <p>
        <b>
         (3)
        </b>
        <b>
         归一化算法
        </b>
        <b>
        </b>
       </p>
       <p>
        一种简单而快速的归一化算法是线性转换算法。线性转换算法常见有两种形式：
       </p>
       <p>
        &lt;1&gt;
       </p>
       <p align="center">
        y = ( x – min )/( max – min )
       </p>
       <p>
        其中min为x的最小值，max为x的最大值，输入向量为x，归一化后的输出向量为y 。上式将数据归一化到 [ 0 , 1 ]区间，当激活函数采用S形函数时（值域为(0,1)）时这条式子适用。
       </p>
       <p>
        &lt;2&gt;
       </p>
       <p align="center">
        y = 2 * ( x – min ) / ( max – min ) – 1
       </p>
       <p>
        这条公式将数据归一化到 [ -1 , 1 ] 区间。当激活函数采用双极S形函数（值域为(-1,1)）时这条式子适用。
       </p>
       <p>
        <b>
         (4) Matlab
        </b>
        <b>
         数据归一化处理函数
        </b>
        <b>
        </b>
       </p>
       <p>
        Matlab中归一化处理数据可以采用premnmx ， postmnmx ， tramnmx 这3个函数。
       </p>
       <p>
        <b>
         &lt;1&gt; premnmx
        </b>
       </p>
       <p>
        语法：[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t)
       </p>
       <p>
        参数：
       </p>
       <p>
        pn： p矩阵按行归一化后的矩阵
       </p>
       <p>
        minp，maxp：p矩阵每一行的最小值，最大值
       </p>
       <p>
        tn：t矩阵按行归一化后的矩阵
       </p>
       <p>
        mint，maxt：t矩阵每一行的最小值，最大值
       </p>
       <p>
        作用：将矩阵p，t归一化到[-1,1] ，主要用于归一化处理训练数据集。
       </p>
       <p>
        <b>
         &lt;2&gt; tramnmx
        </b>
       </p>
       <p>
        语法：[pn] = tramnmx(p,minp,maxp)
       </p>
       <p>
        参数：
       </p>
       <p>
        minp，maxp：premnmx函数计算的矩阵的最小，最大值
       </p>
       <p>
        pn：归一化后的矩阵
       </p>
       <p>
        作用：主要用于归一化处理待分类的输入数据。
       </p>
       <p>
        <b>
         &lt;3&gt; postmnmx
        </b>
       </p>
       <p>
        语法： [p,t] = postmnmx(pn,minp,maxp,tn,mint,maxt)
       </p>
       <p>
        参数：
       </p>
       <p>
        minp，maxp：premnmx函数计算的p矩阵每行的最小值，最大值
       </p>
       <p>
        mint，maxt：premnmx函数计算的t矩阵每行的最小值，最大值
       </p>
       <p>
        作用：将矩阵pn，tn映射回归一化处理前的范围。postmnmx函数主要用于将神经网络的输出结果映射回归一化前的数据范围。
       </p>
       <p>
        <b>
         2.
        </b>
        <b>
         使用
        </b>
        <b>
         Matlab
        </b>
        <b>
         实现神经网络
        </b>
        <b>
        </b>
       </p>
       <p>
        使用Matlab建立前馈神经网络主要会使用到下面3个函数：
       </p>
       <p>
        newff ：前馈网络创建函数
       </p>
       <p>
        train：训练一个神经网络
       </p>
       <p>
        sim ：使用网络进行仿真
       </p>
       <p>
        下面简要介绍这3个函数的用法。
       </p>
       <p>
        <b>
         (1) newff
        </b>
        <b>
         函数
        </b>
        <b>
        </b>
       </p>
       <p>
        <b>
         &lt;1&gt;newff
        </b>
        <b>
         函数语法
        </b>
        <b>
        </b>
       </p>
       <p>
        newff函数参数列表有很多的可选参数，具体可以参考Matlab的帮助文档，这里介绍newff函数的一种简单的形式。
       </p>
       <p>
        语法：net = newff ( A, B, {C} ,‘trainFun’)
       </p>
       <p>
        参数：
       </p>
       <p>
        A：一个n×2的矩阵，第i行元素为输入信号xi的最小值和最大值；
       </p>
       <p>
        B：一个k维行向量，其元素为网络中各层节点数；
       </p>
       <p>
        C：一个k维字符串行向量，每一分量为对应层神经元的
        <b>
         激活函数
        </b>
        ；
       </p>
       <p>
        trainFun ：为学习规则采用的
        <b>
         训练算法
        </b>
        。
       </p>
       <p>
        <b>
         &lt;2&gt;
        </b>
        <b>
         常用的激活函数
        </b>
       </p>
       <p>
        常用的激活函数有：
       </p>
       <p>
        <b>
         a)
        </b>
        <b>
         线性函数
        </b>
        (Linear transfer function)
       </p>
       <p align="center">
        f(x) = x
       </p>
       <p>
        该函数的字符串为’purelin’。
       </p>
       <p>
        <b>
        </b>
       </p>
       <p>
        <b>
         b)
        </b>
        <b>
         对数S形转移函数
        </b>
        ( Logarithmic sigmoid transfer function )
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722161050.png"/>
       </p>
       <p>
        该函数的字符串为’logsig’。
       </p>
       <p>
        <b>
         c)
        </b>
        <b>
         双曲正切S形函数
        </b>
        (Hyperbolic tangent sigmoid transfer function )
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722162848.png"/>
       </p>
       <p>
        也就是上面所提到的双极S形函数。
       </p>
       <p align="center">
       </p>
       <p>
        该函数的字符串为’ tansig’。
       </p>
       <p>
        Matlab的安装目录下的toolbox\nnet\nnet\nntransfer子目录中有所有激活函数的定义说明。
       </p>
       <p>
        <b>
         &lt;3&gt;
        </b>
        <b>
         常见的训练函数
        </b>
       </p>
       <p>
        常见的训练函数有：
       </p>
       <p>
        traingd ：梯度下降BP训练函数(Gradient descent backpropagation)
       </p>
       <p>
        traingdx ：梯度下降自适应学习率训练函数
       </p>
       <p>
        <b>
         &lt;4&gt;
        </b>
        <b>
         网络配置参数
        </b>
       </p>
       <p>
        一些重要的网络配置参数如下：
       </p>
       <p>
        net.trainparam.goal  ：神经网络训练的目标误差
       </p>
       <p>
        net.trainparam.show   ： 显示中间结果的周期
       </p>
       <p>
        net.trainparam.epochs 　：最大迭代次数
       </p>
       <p align="left">
        net.trainParam.lr    ： 学习率
       </p>
       <p>
        <b>
         (2) train
        </b>
        <b>
         函数
        </b>
       </p>
       <p>
        网络训练学习函数。
       </p>
       <p>
        语法：[ net, tr, Y1, E ]  = train( net, X, Y )
       </p>
       <p>
        参数：
       </p>
       <p>
        X：网络实际输入
       </p>
       <p>
        Y：网络应有输出
       </p>
       <p>
        tr：训练跟踪信息
       </p>
       <p>
        Y1：网络实际输出
       </p>
       <p>
        E：误差矩阵
       </p>
       <p>
        <b>
         (3) sim
        </b>
        <b>
         函数
        </b>
       </p>
       <p>
        语法：Y=sim(net,X)
       </p>
       <p>
        参数：
       </p>
       <p>
        net：网络
       </p>
       <p>
        X：输入给网络的Ｋ×N矩阵，其中K为网络输入个数，N为数据样本数
       </p>
       <p>
        Y：输出矩阵Q×N，其中Q为网络输出个数
       </p>
       <p>
        <b>
         (4) Matlab BP
        </b>
        <b>
         网络实例
        </b>
        <b>
        </b>
       </p>
       <p>
        我将Iris数据集分为2组，每组各75个样本，每组中每种花各有25个样本。其中一组作为以上程序的训练样本，另外一组作为检验样本。为了方便训练，将3类花分别编号为1，2，3 。
       </p>
       <p>
        使用这些数据训练一个4输入（分别对应4个特征），3输出（分别对应该样本属于某一品种的可能性大小）的前向网络。
       </p>
       <p>
        Matlab程序如下：
       </p>
       <div class="cnblogs_code">
        <blockquote>
         <div>
          %读取训练数据
          <br/>
          [f1,f2,f3,f4,class] = textread(‘trainData.txt’ , ‘%f%f%f%f%f’,150);
          <p>
          </p>
          <p>
           %特征值归一化
           <br/>
           [input,minI,maxI] = premnmx( [f1 , f2 , f3 , f4 ]’) ;
          </p>
          <p>
           %构造输出矩阵
           <br/>
           s = length( class) ;
           <br/>
           output = zeros( s , 3 ) ;
           <br/>
           for i = 1 : s
           <br/>
           output( i , class( i ) ) = 1 ;
           <br/>
           end
          </p>
          <p>
           %创建神经网络
           <br/>
           net = newff( minmax(input) , [10 3] , { ‘logsig’ ‘purelin’ } , ‘traingdx’ ) ;
          </p>
          <p>
           %设置训练参数
           <br/>
           net.trainparam.show = 50 ;
           <br/>
           net.trainparam.epochs = 500 ;
           <br/>
           net.trainparam.goal = 0.01 ;
           <br/>
           net.trainParam.lr = 0.01 ;
          </p>
          <p>
           %开始训练
           <br/>
           net = train( net, input , output’ ) ;
          </p>
          <p>
           %读取测试数据
           <br/>
           [t1 t2 t3 t4 c] = textread(‘testData.txt’ , ‘%f%f%f%f%f’,150);
          </p>
          <p>
           %测试数据归一化
           <br/>
           testInput = tramnmx ( [t1,t2,t3,t4]’ , minI, maxI ) ;
          </p>
          <p>
           %仿真
           <br/>
           Y = sim( net , testInput )
          </p>
          <p>
           %统计识别正确率
           <br/>
           [s1 , s2] = size( Y ) ;
           <br/>
           hitNum = 0 ;
           <br/>
           for i = 1 : s2
           <br/>
           [m , Index] = max( Y( : , i ) ) ;
           <br/>
           if( Index == c(i) )
           <br/>
           hitNum = hitNum + 1 ;
           <br/>
           end
           <br/>
           end
           <br/>
           sprintf(‘识别率是 %3.3f%%’,100 * hitNum / s2 )
          </p>
         </div>
         <div class="cnblogs_code_toolbar">
         </div>
        </blockquote>
       </div>
       <div>
       </div>
       <p>
        以上程序的识别率稳定在95%左右，训练100次左右达到收敛，训练曲线如下图所示：
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722165346.png"/>
       </p>
       <p align="center">
        图9. 训练性能表现
       </p>
       <p align="left">
       </p>
       <p>
        <b>
         (5)
        </b>
        <b>
         参数设置对神经网络性能的影响
        </b>
        <b>
        </b>
       </p>
       <p align="left">
        我在实验中通过调整隐含层节点数，选择不通过的激活函数，设定不同的学习率，
       </p>
       <p align="left">
       </p>
       <p align="left">
        <b>
         &lt;1&gt;
        </b>
        <b>
         隐含层节点个数
        </b>
        <b>
        </b>
       </p>
       <p align="left">
        隐含层节点的个数对于识别率的影响并不大，但是节点个数过多会增加运算量，使得训练较慢。
       </p>
       <p align="left">
       </p>
       <p align="left">
        <b>
         &lt;2&gt;
        </b>
        <b>
         激活函数的选择
        </b>
        <b>
        </b>
       </p>
       <p align="left">
        激活函数无论对于识别率或收敛速度都有显著的影响。在逼近高次曲线时，S形函数精度比线性函数要高得多，但计算量也要大得多。
       </p>
       <p align="left">
       </p>
       <p align="left">
        <b>
         &lt;3&gt;
        </b>
        <b>
         学习率的选择
        </b>
        <b>
        </b>
       </p>
       <p align="left">
        学习率影响着网络收敛的速度，以及网络能否收敛。学习率设置偏小可以保证网络收敛，但是收敛较慢。相反，学习率设置偏大则有可能使网络训练不收敛，影响识别效果。
       </p>
       <p align="left">
       </p>
       <p>
        <b>
         3.
        </b>
        <b>
         使用
        </b>
        <b>
         AForge.NET
        </b>
        <b>
         实现神经网络
        </b>
        <b>
        </b>
       </p>
       <p>
        <b>
         (1) AForge.NET
        </b>
        <b>
         简介
        </b>
        <b>
        </b>
       </p>
       <p>
        AForge.NET是一个C#实现的面向人工智能、计算机视觉等领域的开源架构。AForge.NET源代码下的Neuro目录包含一个神经网络的类库。
       </p>
       <p>
        AForge.NET主页：
        <a href="http://www.aforgenet.com/">
         http://www.aforgenet.com/
        </a>
       </p>
       <p>
        AForge.NET代码下载：
        <a href="http://code.google.com/p/aforge/">
         http://code.google.com/p/aforge/
        </a>
       </p>
       <p>
        Aforge.Neuro工程的类图如下：
       </p>
       <p align="center">
       </p>
       <p align="center">
        <img src="http://dataunion.org/wp-content/uploads/2015/03/2011030722185566.png"/>
       </p>
       <p align="center">
        图10. AForge.Neuro类库类图
       </p>
       <p align="left">
       </p>
       <p align="left">
        下面介绍图9中的几个基本的类：
       </p>
       <p align="left">
        Neuron — 神经元的抽象基类
       </p>
       <p align="left">
        Layer — 层的抽象基类，由多个神经元组成
       </p>
       <p align="left">
        Network —神经网络的抽象基类，由多个层（Layer）组成
       </p>
       <p align="left">
        IActivationFunction – 激活函数（activation function）的接口
       </p>
       <p align="left">
        IUnsupervisedLearning – 无导师学习（unsupervised learning）算法的接口ISupervisedLearning – 有导师学习（supervised learning）算法的接口
       </p>
       <p align="left">
       </p>
       <p>
        <b>
         (2)
        </b>
        <b>
         使用
        </b>
        <b>
         Aforge
        </b>
        <b>
         建立
        </b>
        <b>
         BP
        </b>
        <b>
         神经网络
        </b>
        <b>
        </b>
       </p>
       <p>
        使用AForge建立BP神经网络会用到下面的几个类：
       </p>
       <p>
        &lt;1&gt;  SigmoidFunction ： S形神经网络
       </p>
       <p align="left">
        构造函数：public SigmoidFunction( double alpha )
       </p>
       <p align="left">
        参数alpha决定S形函数的陡峭程度。
       </p>
       <p>
        &lt;2&gt;  ActivationNetwork　：神经网络类
       </p>
       <p>
        构造函数：
       </p>
       <p align="left">
        public ActivationNetwork( IActivationFunction function, int inputsCount, params int[] neuronsCount )
       </p>
       <p align="left">
        : base( inputsCount, neuronsCount.Length )
       </p>
       <p align="left">
        public virtual double[] Compute( double[] input )
       </p>
       <p align="left">
       </p>
       <p>
        参数意义：
       </p>
       <p>
        inputsCount：输入个数
       </p>
       <p>
        neuronsCount　：表示各层神经元个数
       </p>
       <p>
        &lt;3&gt;  BackPropagationLearning：BP学习算法
       </p>
       <p>
        构造函数：
       </p>
       <p align="left">
        public BackPropagationLearning( ActivationNetwork network )
       </p>
       <p align="left">
        参数意义：
       </p>
       <p>
        network ：要训练的神经网络对象
       </p>
       <p>
        BackPropagationLearning类需要用户设置的属性有下面2个：
       </p>
       <p>
        learningRate ：学习率
       </p>
       <p>
        momentum ：冲量因子
       </p>
       <p>
        下面给出一个用AForge构建BP网络的代码。
       </p>
       <div>
        <div class="cnblogs_code">
         <blockquote>
          <div>
           // 创建一个多层神经网络，采用S形激活函数，各层分别有4,5,3个神经元
          </div>
          <div>
           //(其中4是输入个数，3是输出个数，5是中间层结点个数)
           <br/>
           ActivationNetwork network = new ActivationNetwork(
           <br/>
           new SigmoidFunction(2), 4, 5, 3);
           <p>
           </p>
           <p>
            // 创建训练算法对象
            <br/>
            BackPropagationLearning teacher = new
            <br/>
            BackPropagationLearning(network);
           </p>
           <p>
            // 设置BP算法的学习率与冲量系数
            <br/>
            teacher.LearningRate = 0.1;
            <br/>
            teacher.Momentum = 0;
           </p>
           <p>
            int iteration = 1 ;
           </p>
           <p>
            // 迭代训练500次
            <br/>
            while( iteration &lt; 500 )
            <br/>
            {
            <br/>
            teacher.RunEpoch( trainInput , trainOutput ) ;
            <br/>
            ++iteration ;
            <br/>
            }
           </p>
           <p>
            //使用训练出来的神经网络来分类，t为输入数据向量
            <br/>
            network.Compute(t)[0]
           </p>
          </div>
         </blockquote>
        </div>
        <p align="left">
        </p>
       </div>
       <p>
        改程序对Iris 数据进行分类，识别率可达97%左右 。
       </p>
       <p>
        <a href="http://files.cnblogs.com/heaad/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B_%E6%BA%90%E4%BB%A3%E7%A0%81.rar" target="_blank">
         点击下载源代码
        </a>
       </p>
       <p>
       </p>
       <p>
        <b>
         参考文献
        </b>
        <b>
        </b>
       </p>
       <p>
        [1] Andrew Kirillov. Neural Networks on C#. [Online].
       </p>
       <p>
        <a href="http://www.codeproject.com/KB/recipes/aforge_neuro.aspx">
         http://www.codeproject.com/KB/recipes/aforge_neuro.aspx
        </a>
        2006.10
       </p>
       <p>
        [2] Sacha Barber. AI : Neural Network for beginners. [Online].
       </p>
       <p>
        <a href="http://www.codeproject.com/KB/recipes/NeuralNetwork_1.aspx">
         http://www.codeproject.com/KB/recipes/NeuralNetwork_1.aspx
        </a>
        2007.5
       </p>
       <p>
        [3] Richard O. Duda, Peter E. Hart and David G. Stork. 模式分类. 机械工业出版社. 2010.4
       </p>
       <p>
        [4] Wikipedia. Iris flower data set. [Online].
       </p>
       <p>
        <a href="http://en.wikipedia.org/wiki/Iris_flower_data_set">
         http://en.wikipedia.org/wiki/Iris_flower_data_set
        </a>
       </p>
       <p>
       </p>
       <p>
        文章出处：
        <a href="http://www.cnblogs.com/heaad/" target="_blank">
         http://www.cnblogs.com/heaad/
        </a>
       </p>
      </div>
      <div>
       <strong>
        注：转载文章均来自于公开网络，仅供学习使用，不会用于任何商业用途，如果侵犯到原作者的权益，请您与我们联系删除或者授权事宜，联系邮箱：contact@dataunion.org。转载数盟网站文章请注明原文章作者，否则产生的任何版权纠纷与数盟无关。
       </strong>
      </div>
      <!--content_text-->
      <div class="fenxian">
       <!-- JiaThis Button BEGIN -->
       <div class="jiathis_style_32x32">
        <p class="jiathis_button_weixin">
        </p>
        <p class="jiathis_button_tsina">
        </p>
        <p class="jiathis_button_qzone">
        </p>
        <p class="jiathis_button_cqq">
        </p>
        <p class="jiathis_button_tumblr">
        </p>
        <a class="jiathis jiathis_txt jtico jtico_jiathis" href="http://www.jiathis.com/share" target="_blank">
        </a>
        <p class="jiathis_counter_style">
        </p>
       </div>
       <!-- JiaThis Button END -->
      </div>
     </article>
     <!--content-->
     <!--相关文章-->
     <div class="xianguan">
      <div class="xianguantitle">
       相关文章！
      </div>
      <ul class="pic">
       <li>
        <a href="http://dataunion.org/19957.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/06/t011dbab2b2700436fe_副本.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/19957.html" rel="bookmark" title="神经网络训练中的Tricks之高效BP（反向传播算法）">
         神经网络训练中的Tricks之高效BP（反向传播算法）
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/18209.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/05/t018044de9ac74e0b51-300x228.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/18209.html" rel="bookmark" title="基于SVM与人工神经网络的车牌识别系统">
         基于SVM与人工神经网络的车牌识别系统
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/16596.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/05/t019f06e6dc5fbb7de9-300x225.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/16596.html" rel="bookmark" title="神经网络基础和感知器">
         神经网络基础和感知器
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/14040.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/04/640.webp-4-300x200.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/14040.html" rel="bookmark" title="朝拜：神经网络的信徒们">
         朝拜：神经网络的信徒们
        </a>
       </li>
      </ul>
     </div>
     <!--相关文章-->
     <div class="comment" id="comments">
      <!-- You can start editing here. -->
      <!-- If comments are open, but there are no comments. -->
      <div class="title">
       期待你一针见血的评论，Come on！
      </div>
      <div id="respond">
       <p>
        不用想啦，马上
        <a href="http://dataunion.org/wp-login.php?redirect_to=http%3A%2F%2Fdataunion.org%2F12744.html">
         "登录"
        </a>
        发表自已的想法.
       </p>
      </div>
     </div>
     <!-- .nav-single -->
    </div>
    <!--Container End-->
    <aside id="sitebar">
     <div class="sitebar_list2">
      <div class="wptag">
       <span class="tagtitle">
        热门标签+
       </span>
       <div class="tagg">
        <ul class="menu" id="menu-%e5%8f%8b%e6%83%85%e9%93%be%e6%8e%a5">
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1605" id="menu-item-1605">
          <a href="http://taidizh.com/">
           泰迪智慧
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-20884" id="menu-item-20884">
          <a href="http://www.transwarp.cn/">
           星环科技
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3538" id="menu-item-3538">
          <a href="http://datall.org/">
           珈和遥感
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-20888" id="menu-item-20888">
          <a href="http://www.chinahadoop.cn/">
           小象学院
          </a>
         </li>
        </ul>
       </div>
      </div>
     </div>
     <div class="sitebar_list">
      <div class="textwidget">
       <div align="center">
        <a href="http://study.163.com/course/courseMain.htm?courseId=991022" target="_blank">
         <img src="http://dataunion.org/wp-content/uploads/2016/03/dv.jpg"/>
        </a>
       </div>
      </div>
     </div>
     <div class="sitebar_list">
      <h4 class="sitebar_title">
       文章分类
      </h4>
      <div class="tagcloud">
       <a class="tag-link-44" href="http://dataunion.org/category/industry/demo" style="font-size: 10.204724409449pt;" title="4个话题">
        Demo展示
       </a>
       <a class="tag-link-31" href="http://dataunion.org/category/experts" style="font-size: 15.826771653543pt;" title="52个话题">
        专家团队
       </a>
       <a class="tag-link-870" href="http://dataunion.org/category/tech/ai" style="font-size: 19.795275590551pt;" title="273个话题">
        人工智能
       </a>
       <a class="tag-link-488" href="http://dataunion.org/category/%e5%8a%a0%e5%85%a5%e6%95%b0%e7%9b%9f" style="font-size: 8pt;" title="1个话题">
        加入数盟
       </a>
       <a class="tag-link-869" href="http://dataunion.org/category/tech/viz" style="font-size: 17.204724409449pt;" title="93个话题">
        可视化
       </a>
       <a class="tag-link-30" href="http://dataunion.org/category/partners" style="font-size: 10.645669291339pt;" title="5个话题">
        合作伙伴
       </a>
       <a class="tag-link-889" href="http://dataunion.org/category/parterc" style="font-size: 11.582677165354pt;" title="8个话题">
        合作会议
       </a>
       <a class="tag-link-104" href="http://dataunion.org/category/books" style="font-size: 12.96062992126pt;" title="15个话题">
        图书
       </a>
       <a class="tag-link-220" href="http://dataunion.org/category/tech/base" style="font-size: 19.850393700787pt;" title="281个话题">
        基础架构
       </a>
       <a class="tag-link-219" href="http://dataunion.org/category/tech/analysis" style="font-size: 19.409448818898pt;" title="232个话题">
        数据分析
       </a>
       <a class="tag-link-887" href="http://dataunion.org/category/tech/dm" style="font-size: 13.291338582677pt;" title="17个话题">
        数据挖掘
       </a>
       <a class="tag-link-34" href="http://dataunion.org/category/tech" style="font-size: 20.732283464567pt;" title="404个话题">
        文章
       </a>
       <a class="tag-link-1" href="http://dataunion.org/category/uncategorized" style="font-size: 22pt;" title="693个话题">
        未分类
       </a>
       <a class="tag-link-4" href="http://dataunion.org/category/events" style="font-size: 14.503937007874pt;" title="29个话题">
        活动
       </a>
       <a class="tag-link-890" href="http://dataunion.org/category/tech/%e6%b7%b1%e5%ba%a6%e5%ad%a6%e4%b9%a0" style="font-size: 10.204724409449pt;" title="4个话题">
        深度学习
       </a>
       <a class="tag-link-221" href="http://dataunion.org/category/tech/devl" style="font-size: 18.968503937008pt;" title="193个话题">
        编程语言
       </a>
       <a class="tag-link-888" href="http://dataunion.org/category/career" style="font-size: 15.661417322835pt;" title="48个话题">
        职业规划
       </a>
       <a class="tag-link-5" href="http://dataunion.org/category/jobs" style="font-size: 14.11811023622pt;" title="25个话题">
        职位
       </a>
       <a class="tag-link-871" href="http://dataunion.org/category/industry" style="font-size: 15.716535433071pt;" title="49个话题">
        行业
       </a>
       <a class="tag-link-613" href="http://dataunion.org/category/industry/case" style="font-size: 16.984251968504pt;" title="84个话题">
        行业应用
       </a>
       <a class="tag-link-885" href="http://dataunion.org/category/industry/news" style="font-size: 17.425196850394pt;" title="102个话题">
        行业资讯
       </a>
       <a class="tag-link-10" href="http://dataunion.org/category/training" style="font-size: 14.228346456693pt;" title="26个话题">
        课程
       </a>
       <a class="tag-link-16" href="http://dataunion.org/category/sources" style="font-size: 15.661417322835pt;" title="48个话题">
        资源
       </a>
      </div>
     </div>
     <div class="sitebar_list">
      <h4 class="sitebar_title">
       功能
      </h4>
      <ul>
       <li>
        <a href="http://dataunion.org/wp-login.php?action=register">
         注册
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/wp-login.php">
         登录
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/feed">
         文章
         <abbr title="Really Simple Syndication">
          RSS
         </abbr>
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/comments/feed">
         评论
         <abbr title="Really Simple Syndication">
          RSS
         </abbr>
        </a>
       </li>
       <li>
        <a href="https://cn.wordpress.org/" title="基于WordPress，一个优美、先进的个人信息发布平台。">
         WordPress.org
        </a>
       </li>
      </ul>
     </div>
    </aside>
    <div class="clear">
    </div>
   </div>
   <!--main-->
   ﻿
   <footer id="dibu">
    <div class="about">
     <div class="right">
      <ul class="menu" id="menu-%e5%ba%95%e9%83%a8%e8%8f%9c%e5%8d%95">
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-18024" id="menu-item-18024">
        <a href="http://dataunion.org/category/partners">
         合作伙伴
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20881" id="menu-item-20881">
        <a href="http://dataunion.org/contribute">
         文章投稿
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20872" id="menu-item-20872">
        <a href="http://dataunion.org/category/%e5%8a%a0%e5%85%a5%e6%95%b0%e7%9b%9f">
         加入数盟
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22441" id="menu-item-22441">
        <a href="http://dataunion.org/f-links">
         友情链接
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20874" id="menu-item-20874">
        <a href="http://dataunion.org/aboutus">
         关于数盟
        </a>
       </li>
      </ul>
      <p class="banquan">
       数盟社区        ，
        做最棒的数据科学社区
      </p>
     </div>
     <div class="left">
      <ul class="bottomlist">
       <li>
        <a href="http://weibo.com/DataScientistUnion  " target="_blank" 　title="">
         <img src="http://dataunion.org/wp-content/themes/yzipi/images/weibo.png"/>
        </a>
       </li>
       <li>
        <a class="cd-popup-trigger" href="http://dataunion.org/12744.html#0">
         <img src="http://dataunion.org/wp-content/themes/yzipi/images/weixin.png"/>
        </a>
       </li>
      </ul>
      <div class="cd-popup">
       <div class="cd-popup-container">
        <h1>
         扫描二维码,加微信公众号
        </h1>
        <img src="http://dataunion.org/wp-content/themes/yzipi/images/2014-12-06-1515289049.png"/>
        <a class="cd-popup-close" href="http://dataunion.org/12744.html">
        </a>
       </div>
       <!-- cd-popup-container -->
      </div>
      <!-- cd-popup -->
     </div>
    </div>
    <!--about-->
    <div class="bottom">
     <a href="http://dataunion.org/">
      数盟社区
     </a>
     <a href="http://www.miitbeian.gov.cn/" rel="external nofollow" target="_blank">
      京ICP备14026740号
     </a>
     联系我们：
     <a href="mailto:contact@dataunion.org" target="_blank">
      contact@dataunion.org
     </a>
     <div class="tongji">
     </div>
     <!--bottom-->
     <div class="scroll" id="scroll" style="display:none;">
      ︿
     </div>
    </div>
   </footer>
   <!--dibu-->
  </div>
 </body>
</html>